A disk drive receives multiple commands to execute essentially random disk address I/O transfers. In other words, the I/O commands require data to be written or read at various locations throughout the disk drive. When the commands arrive faster than they can be executed, they accumulate in a queue. By recognizing that I/O commands need not be executed in the order received, I/O throughput may be increased by changing the order of execution of queued commands. U.S. Pat. Nos. 4,583,166, 5,140,683, and 4,232,365 describe various queue reordering techniques. My co-pending application Ser. No. 08/149,982 now abandoned entitled ROTATIONAL LATENCY QUEUE REORDERING, filed on Nov. 10, 1993 and assigned in common to the assignee of the present application describes a queue reordering technique taking into account both seek time and rotational latency in determining the time delay between executing commands.
In management of queued I/O processes, performance enhancing features applied to queued command records have become an important aspect of disk drive operation. Background command preprocessing, rotational latency reordering, command dependency analysis, and data streaming have improved disk drive performance relative to a set of I/O processes queued in the disk drive. Performance enhancing features generally require per command information be maintained in the generally limited-in-size SRAM (static random access memory) resource. Each executable command record occupies a substantial amount of direct access SRAM memory. SRAM memory is preferred for holding the executable command records for its low access time and direct addressability by the disk drive microprocessor. Unfortunately, SRAM memory is a limited resource. Creating individual SRAM command records for a large number of I/O commands quickly consumes this valuable resource. For example, a typical disk drive architecture might allow a command queue depth of approximately 16 executable command records including performance enhancing information.
Operating system and device driver developments relative to disk usage have advanced significantly. Host computers now queue more and more I/O processes in the disk drive. Because host computers generate significant I/O commands for presentation to the disk drive, limitation in disk drive command queue depth is undesirable. The subject matter of the present invention, however, enables a host computer to submit a great number of I/O commands to the disk drive regardless of any limitation in SRAM resources.
Command queue processing by a disk drive can at times consume a significant amount of bus overhead time. For example, consider a disk drive receiving I/O commands from a host computer. During a command reception, an I/O command is accepted from the host computer by way of a bus, e.g., a Small Computer System Interface (SCSI) bus. Command records are created and inserted into the disk drive SRAM command queue during the command reception. This process of queue insertion during the command reception requires firmware intervention, i.e., execution of instructions by a disk drive microprocessor. If such process is performed while the disk drive is logically active on the SCSI bus, significant bus idle time passes as the microprocessor performs the tasks of I/O command reception and insertion into the command queue stored in the SRAM memory resource before the microprocessor can release the bus for use by other devices and resources.
Thus, disk drive I/O reception and processing within a command queue presents challenges with respect to disk drive operation in two significant areas. First, I/O command queues, to take advantage of performance enhancing features, quickly exhaust the limited and valuable SRAM resource. The SRAM resource immediately limits the number of commands available for computation, e.g. physical address data and dependency information by the disk drive in support of performance enhancing features, held in a command queue data structure. Second, I/O command reception requiring firmware intervention undesirably consumes, at times, significant bus overhead time, leading to lower bus utilization.
The subject matter of the present invention addresses these areas of disk drive I/O command management by establishing a command queuing system with performance enhancing features but also with virtually unlimited command queue depth and without firmware intervention during command reception thereby boosting bus utilization.